home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_difflib.py < prev    next >
Text File  |  2005-10-18  |  5KB  |  149 lines

  1. import difflib
  2. from test.test_support import run_unittest, findfile
  3. import unittest
  4. import doctest
  5.  
  6. class TestSFbugs(unittest.TestCase):
  7.  
  8.     def test_ratio_for_null_seqn(self):
  9.         # Check clearing of SF bug 763023
  10.         s = difflib.SequenceMatcher(None, [], [])
  11.         self.assertEqual(s.ratio(), 1)
  12.         self.assertEqual(s.quick_ratio(), 1)
  13.         self.assertEqual(s.real_quick_ratio(), 1)
  14.  
  15.     def test_comparing_empty_lists(self):
  16.         # Check fix for bug #979794
  17.         group_gen = difflib.SequenceMatcher(None, [], []).get_grouped_opcodes()
  18.         self.assertRaises(StopIteration, group_gen.next)
  19.         diff_gen = difflib.unified_diff([], [])
  20.         self.assertRaises(StopIteration, diff_gen.next)
  21.  
  22. patch914575_from1 = """
  23.    1. Beautiful is beTTer than ugly.
  24.    2. Explicit is better than implicit.
  25.    3. Simple is better than complex.
  26.    4. Complex is better than complicated.
  27. """
  28.  
  29. patch914575_to1 = """
  30.    1. Beautiful is better than ugly.
  31.    3.   Simple is better than complex.
  32.    4. Complicated is better than complex.
  33.    5. Flat is better than nested.
  34. """
  35.  
  36. patch914575_from2 = """
  37. \t\tLine 1: preceeded by from:[tt] to:[ssss]
  38.   \t\tLine 2: preceeded by from:[sstt] to:[sssst]
  39.   \t \tLine 3: preceeded by from:[sstst] to:[ssssss]
  40. Line 4:  \thas from:[sst] to:[sss] after :
  41. Line 5: has from:[t] to:[ss] at end\t
  42. """
  43.  
  44. patch914575_to2 = """
  45.     Line 1: preceeded by from:[tt] to:[ssss]
  46.     \tLine 2: preceeded by from:[sstt] to:[sssst]
  47.       Line 3: preceeded by from:[sstst] to:[ssssss]
  48. Line 4:   has from:[sst] to:[sss] after :
  49. Line 5: has from:[t] to:[ss] at end
  50. """
  51.  
  52. patch914575_from3 = """line 0
  53. 1234567890123456789012345689012345
  54. line 1
  55. line 2
  56. line 3
  57. line 4   changed
  58. line 5   changed
  59. line 6   changed
  60. line 7
  61. line 8  subtracted
  62. line 9
  63. 1234567890123456789012345689012345
  64. short line
  65. just fits in!!
  66. just fits in two lines yup!!
  67. the end"""
  68.  
  69. patch914575_to3 = """line 0
  70. 1234567890123456789012345689012345
  71. line 1
  72. line 2    added
  73. line 3
  74. line 4   chanGEd
  75. line 5a  chanGed
  76. line 6a  changEd
  77. line 7
  78. line 8
  79. line 9
  80. 1234567890
  81. another long line that needs to be wrapped
  82. just fitS in!!
  83. just fits in two lineS yup!!
  84. the end"""
  85.  
  86. class TestSFpatches(unittest.TestCase):
  87.  
  88.     def test_html_diff(self):
  89.         # Check SF patch 914575 for generating HTML differences
  90.         f1a = ((patch914575_from1 + '123\n'*10)*3)
  91.         t1a = (patch914575_to1 + '123\n'*10)*3
  92.         f1b = '456\n'*10 + f1a
  93.         t1b = '456\n'*10 + t1a
  94.         f1a = f1a.splitlines()
  95.         t1a = t1a.splitlines()
  96.         f1b = f1b.splitlines()
  97.         t1b = t1b.splitlines()
  98.         f2 = patch914575_from2.splitlines()
  99.         t2 = patch914575_to2.splitlines()
  100.         f3 = patch914575_from3
  101.         t3 = patch914575_to3
  102.         i = difflib.HtmlDiff()
  103.         j = difflib.HtmlDiff(tabsize=2)
  104.         k = difflib.HtmlDiff(wrapcolumn=14)
  105.  
  106.         full = i.make_file(f1a,t1a,'from','to',context=False,numlines=5)
  107.         tables = '\n'.join(
  108.             [
  109.              '<h2>Context (first diff within numlines=5(default))</h2>',
  110.              i.make_table(f1a,t1a,'from','to',context=True),
  111.              '<h2>Context (first diff after numlines=5(default))</h2>',
  112.              i.make_table(f1b,t1b,'from','to',context=True),
  113.              '<h2>Context (numlines=6)</h2>',
  114.              i.make_table(f1a,t1a,'from','to',context=True,numlines=6),
  115.              '<h2>Context (numlines=0)</h2>',
  116.              i.make_table(f1a,t1a,'from','to',context=True,numlines=0),
  117.              '<h2>Same Context</h2>',
  118.              i.make_table(f1a,f1a,'from','to',context=True),
  119.              '<h2>Same Full</h2>',
  120.              i.make_table(f1a,f1a,'from','to',context=False),
  121.              '<h2>Empty Context</h2>',
  122.              i.make_table([],[],'from','to',context=True),
  123.              '<h2>Empty Full</h2>',
  124.              i.make_table([],[],'from','to',context=False),
  125.              '<h2>tabsize=2</h2>',
  126.              j.make_table(f2,t2),
  127.              '<h2>tabsize=default</h2>',
  128.              i.make_table(f2,t2),
  129.              '<h2>Context (wrapcolumn=14,numlines=0)</h2>',
  130.              k.make_table(f3.splitlines(),t3.splitlines(),context=True,numlines=0),
  131.              '<h2>wrapcolumn=14,splitlines()</h2>',
  132.              k.make_table(f3.splitlines(),t3.splitlines()),
  133.              '<h2>wrapcolumn=14,splitlines(True)</h2>',
  134.              k.make_table(f3.splitlines(True),t3.splitlines(True)),
  135.              ])
  136.         actual = full.replace('</body>','\n%s\n</body>' % tables)
  137.         # temporarily uncomment next three lines to baseline this test
  138.         #f = open('test_difflib_expect.html','w')
  139.         #f.write(actual)
  140.         #f.close()
  141.         expect = open(findfile('test_difflib_expect.html')).read()
  142.  
  143.  
  144.         self.assertEqual(actual,expect)
  145.  
  146. Doctests = doctest.DocTestSuite(difflib)
  147.  
  148. run_unittest(TestSFpatches, TestSFbugs, Doctests)
  149.